Micron Document
Fox's Git Mirrors

Node / rns-mirrors / Reticulum-Go.git / files / pkg / packet / decode_test.go

Displaying Raw • Download

pkg/packet/decode_test.go 633735d797cc5f5d48cb2e22e8fd7cd743930daf (633735d7) Text, 1.84 KB

// SPDX-License-Identifier: Apache-2.0
// Copyright (c) 2024-2026 Quad4.io

package packet

import (
"bytes"
"encoding/hex"
"testing"
)

func TestDecodeFrameRoundTripData(t *testing.T) {
dest := bytes.Repeat([]byte{0x11}, TruncatedHashLength)
p := NewPacket(DestinationSingle, []byte("hello"), PacketTypeData, ContextNone, PropagationBroadcast, HeaderType1, nil, false, 0)
p.DestinationHash = dest
if err := p.Pack(); err != nil {
t.Fatalf("pack: %v", err)
}
fr := DecodeFrame(p.Raw)
if !fr.OK {
t.Fatalf("decode: %s", fr.Error)
}
if fr.PacketTypeName != "DATA" || fr.ContextName != "NONE" {
t.Fatalf("names type=%s ctx=%s", fr.PacketTypeName, fr.ContextName)
}
if fr.DestinationHash != hex.EncodeToString(dest) {
t.Fatalf("dest hash %s", fr.DestinationHash)
}
}

func TestPCAPRoundTripUDPPayload(t *testing.T) {
dest := bytes.Repeat([]byte{0x22}, TruncatedHashLength)
p := NewPacket(DestinationSingle, []byte("pcap"), PacketTypeData, ContextNone, PropagationBroadcast, HeaderType1, nil, false, 0)
p.DestinationHash = dest
if err := p.Pack(); err != nil {
t.Fatalf("pack: %v", err)
}
var buf bytes.Buffer
if err := WritePCAPEthernetUDPv4(&buf, p.Raw, 4242, 4242); err != nil {
t.Fatalf("write pcap: %v", err)
}
caps, err := ReadPCAPUDPPayloads(bytes.NewReader(buf.Bytes()))
if err != nil {
t.Fatalf("read pcap: %v", err)
}
if len(caps) != 1 {
t.Fatalf("caps=%d", len(caps))
}
fr := DecodeFrame(caps[0].Payload)
if !fr.OK || fr.PacketTypeName != "DATA" {
t.Fatalf("frame %#v", fr)
}
}

func TestPacketTypeAndContextNames(t *testing.T) {
if PacketTypeName(PacketTypeAnnounce) != "ANNOUNCE" {
t.Fatal("announce name")
}
if ContextName(ContextPathResponse) != "PATH_RESPONSE" {
t.Fatal("path response name")
}
if ContextName(ContextLRProof) != "LRPROOF" {
t.Fatal("lrproof name")
}
}

Served by rngit 1.5.2 - Generated in 0.02s